#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>

//int main()
//{
//  extern char** environ
//  for(int i=0;environ[i];i++)
//  {
//    printf("environ[%d]:%s\n",i,environ[i]);
//  }
//  return 0;
//}


//int main(int argc,char* argv[],char* env[])
//{
//  printf("I am a process,pid:%d,ppid%d\n",getpid(),getppid());
//  for(int i=0;env[i];i++)
//  {
//    printf("----------------------env[%d]->%s\n",i,env[i]);
//  }
//
// pid_t id=fork();
//  if(id==0)
//  {
//    printf("------------------------------------------------------\n");
//    printf("Im a child,pid:%d,ppid:%d\n",getpid(),getppid());
//    for(int i=0;env[i];i++)
//    {
//      printf("--------------------env[%d]->%s\n",i,env[i]);
//    }
//  }
//  sleep(1);
//  return 0;
//}


int g_val=100;
int main()
{
  pid_t id=fork();
  if(id==0)
  {
    int cnt=0;
    while(1)
    {
      printf("child,pid:%d,ppid:%d,g_val:%p,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
      sleep(2);
      cnt++;
      if(cnt==5)
      {
        g_val=200;
        printf("child change g_val:%p,&g_val:%p\n",g_val,&g_val);
      }
    }
  }
  else 
  {
    while(1)
    {
      printf("---------------------------------------------------------------\n");
      printf("parent,pid:%d,ppid:%d,g_val:%p,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
      sleep(2);
    }
  }
  return 0;
}
